package com.example.enginsdk;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;

import com.csizg.imemodule.constant.CustomConstant;
import com.csizg.imemodule.entity.SkbFunItem;
import com.csizg.imemodule.entity.SkbKeyboardItem;
import com.csizg.imemodule.entity.SkbTabItem;
import com.csizg.imemodule.manager.SkbInitBuilderManager;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;


/**
 * @author Administrator
 * @date 2020/5/29
 * @description： 添加键盘上功能区的工具类
 */
public class AddSkbTabUtil {
    /**
     * 添加功能栏上功能按键 ，未登录
     */
    private List<SkbTabItem> skbTabList;

    /**
     * 功能菜单页增加功能键, 登录
     */
    private List<SkbFunItem> skbFunList;

    /**
     * 添加功能栏上功能按键  ，登录
     */
    private List<SkbTabItem> skbTabLoginList;

    /**
     * 根据是否是输入法展示不同的软键盘内容
     */
    private List<SkbFunItem> skbTypeSettingList;

    /**
     * 群聊页面  根据是否是输入法展示不同的软键盘内容
     */
    private List<SkbFunItem> groupSkbTypeSettingList;

    /**
     * 键盘
     */
    private List<SkbKeyboardItem> listKeyboard;

    private static AddSkbTabUtil mAddSkbTabUtil;

    /**
     * 联系人布局
     */
    private View contactsView;

    private AddSkbTabUtil(Context context) {
        listKeyboard = new ArrayList<>();
        skbTabList = new ArrayList<>();
        skbTabLoginList = new ArrayList<>();
        skbFunList = new ArrayList<>();
        skbTypeSettingList = new ArrayList<>();
        groupSkbTypeSettingList = new ArrayList<>();
//        addContactsView(context);
        addSkbTabList(context);
//        addSkbTabLoginList(context);
        addSkbFunList(context);
        addSkbTypeSettingList(context);
        addGroupSkbTypeSettingList(context);
        addSkbKeyboardItem();
    }

    public static AddSkbTabUtil getAddSkbTabUtil(Context context) {
        if (null == mAddSkbTabUtil) {
            mAddSkbTabUtil = new AddSkbTabUtil(context);
        }
        return mAddSkbTabUtil;
    }

    /**
     * 添加未登录时键盘标题栏图标
     */
    private void addSkbTabList(Context context) {
        //键盘图标
        SkbTabItem skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.btn_encrypt_unlogn);
//        skbTabItem.setImageBigResoureId(R.mipmap.btn_encrypt_unlogn);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.btn_encrypt_unlogn);
//        skbTabList.add(skbTabItem);
        //表情
//        skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.btn_smile);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.btn_smile);
//        skbTabList.add(skbTabItem);
        //键盘
        skbTabItem = new SkbTabItem();
        skbTabItem.setImageResoureId(com.csizg.imemodule.R.mipmap.sdk_btn_smile);
        skbTabItem.setImageResourenSeletedId(com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile);
        skbTabList.add(skbTabItem);
        //添加设置键
        skbTabItem = new SkbTabItem();
        skbTabItem.setImageResoureId(com.csizg.imemodule.R.mipmap.sdk_btn_setting);
        skbTabItem.setImageResourenSeletedId(com.csizg.imemodule.R.mipmap.sdk_btn_setting);
        skbTabList.add(skbTabItem);
    }



    /**
     * 添加键盘标题栏图标， 登录
     * 在PinyinIME。ChoiceNotifier中
     */
//    private void addSkbTabLoginList(Context context) {
//        SkbTabItem skbTabItem;
//        //牛头
//        skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.container_add_blue);
//        skbTabItem.setImageBigResoureId(R.mipmap.container_add_blue);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.container_add_blue);
//        skbTabLoginList.add(skbTabItem);
//        // 表情
//        skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.icon_emoji);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.icon_emoji);
//        skbTabLoginList.add(skbTabItem);
//        //语音
//        skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.btn_record);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.btn_record);
//        skbTabLoginList.add(skbTabItem);
//        //键盘
//        skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.btn_keyboard);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.btn_keyboard);
//        skbTabLoginList.add(skbTabItem);
//        // 密电
//        boolean isShowCall = LauncherModel.getInstance()
//            .getSPManager()
//            .getBoolean(IPreferencesIds.IS_SHOW_CALL, IPreferencesIds.IS_SHOW_CALL_BOOLEAN);
//        if (isShowCall) {
//            skbTabItem = new SkbTabItem();
//            skbTabItem.setImageResoureId(R.mipmap.ic_menu_video_call);
//            skbTabItem.setImageResourenSeletedId(R.mipmap.ic_menu_video_call);
//            skbTabLoginList.add(skbTabItem);
//        }
//        //加密
//        skbTabItem = new SkbTabItem();
//        skbTabItem.setImageResoureId(R.mipmap.icon_encrypt_button_red);
//        skbTabItem.setImageResourenSeletedId(R.mipmap.icon_encrypt_button_red);
//        skbTabItem.setImageResourenUnclickable(R.mipmap.icon_encrypt_grey);
//        skbTabItem.setEncryIcon(true);
//        skbTabLoginList.add(skbTabItem);
//    }


    public void resetFunList(Context context) {
        listKeyboard = new ArrayList<>();
        skbTabList = new ArrayList<>();
        skbTabLoginList = new ArrayList<>();
        skbFunList = new ArrayList<>();
        skbTypeSettingList = new ArrayList<>();
        groupSkbTypeSettingList = new ArrayList<>();
        addSkbTabList(context);
//        addSkbTabLoginList(context);
        addSkbFunList(context);
        addSkbTypeSettingList(context);
        addGroupSkbTypeSettingList(context);
        addSkbKeyboardItem();
    }

    /**
     * 添加功能界面的功能建，登录
     * 在SkbContainer。selectSettingsItem中
     */
    private void addSkbFunList(Context context) {
//        SkbFunItem skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.btn_skb_picture);
//        skbFunItem.setFunName(context.getString(R.string.skb_item_picture));
//        skbFunItem.setType(false);
//        skbFunList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.btn_skb_record);
//        skbFunItem.setFunName(context.getString(R.string.skb_item_record));
//        skbFunItem.setType(false);
//        skbFunList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.btn_skb_file);
//        skbFunItem.setFunName(context.getString(R.string.skb_item_file));
//        skbFunItem.setType(false);
//        skbFunList.add(skbFunItem);
//        boolean isShowMiKu = LauncherModel.getInstance()
//            .getSPManager()
//            .getBoolean(IPreferencesIds.IS_SHOW_MI_KU, IPreferencesIds.IS_SHOW_MI_KU_BOOLEAN);
//        if (isShowMiKu) {
//            skbFunItem = new SkbFunItem();
//            skbFunItem.setFunImgRecource(R.mipmap.btn_skb_encryptmiku);
//            skbFunItem.setFunName(context.getString(R.string.skb_item_miku));
//            skbFunItem.setType(false);
//            skbFunList.add(skbFunItem);
//        }
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.btn_skb_auto_match);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.btn_skb_auto_match_two);
//        skbFunItem.setFunName(context.getString(R.string.skb_item_auto_match));
//        skbFunItem.setType(false);
//        skbFunList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.btn_skb_setting);
//        skbFunItem.setFunName(context.getString(R.string.app_skb_item_settings));
//        skbFunItem.setType(false);
//        skbFunList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.btn_skb_miwen);
//        skbFunItem.setFunName(context.getString(R.string.skb_item_encryptfile));
//        skbFunItem.setType(false);
//        skbFunList.add(skbFunItem);
    }

    /**
     * ChatBaseActivity下RecyclerSkbSettingsAdapter加载
     */
    private void addSkbTypeSettingList(Context context) {
//        SkbFunItem skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.ic_image_default);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_image_select);
//        skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_picture));
//        skbTypeSettingList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.ic_photo_default);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_photo_select);
//        skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_record));
//        skbTypeSettingList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.ic_file_default);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_file_select);
//        skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_file));
//        skbTypeSettingList.add(skbFunItem);
//        boolean isShowMiKu = LauncherModel.getInstance()
//            .getSPManager()
//            .getBoolean(IPreferencesIds.IS_SHOW_MI_KU, IPreferencesIds.IS_SHOW_MI_KU_BOOLEAN);
//        if (isShowMiKu) {
//            skbFunItem = new SkbFunItem();
//            skbFunItem.setFunImgRecource(R.mipmap.ic_miku_default);
//            skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_miku_select);
//            skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_miku));
//            skbTypeSettingList.add(skbFunItem);
//        }
    }

    /**
     * ChatBaseActivity  群聊页面下RecyclerSkbSettingsAdapter加载
     */
    private void addGroupSkbTypeSettingList(Context context) {
//        SkbFunItem skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.ic_image_default);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_image_select);
//        skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_picture));
//        groupSkbTypeSettingList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.ic_photo_default);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_photo_select);
//        skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_record));
//        groupSkbTypeSettingList.add(skbFunItem);
//        skbFunItem = new SkbFunItem();
//        skbFunItem.setFunImgRecource(R.mipmap.ic_file_default);
//        skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_file_select);
//        skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_file));
//        groupSkbTypeSettingList.add(skbFunItem);
//        boolean isShowMiKu = LauncherModel.getInstance()
//            .getSPManager()
//            .getBoolean(IPreferencesIds.IS_SHOW_MI_KU, IPreferencesIds.IS_SHOW_MI_KU_BOOLEAN);
//        if (isShowMiKu) {
//            skbFunItem = new SkbFunItem();
//            skbFunItem.setFunImgRecource(R.mipmap.ic_miku_default);
//            skbFunItem.setFunImgRecoureSelected(R.mipmap.ic_miku_select);
//            skbFunItem.setFunName(context.getResources().getString(R.string.skb_item_miku));
//            groupSkbTypeSettingList.add(skbFunItem);
//        }
    }

    /**
     * 添加多键盘
     */
    public void addSkbKeyboardItem() {
        SkbKeyboardItem skbKeyboardItemT9 =
            new SkbKeyboardItem("九键",
                com.csizg.imemodule.R.mipmap.sdk_btn_smile, com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile, CustomConstant.KEYBOARD_VALUE_T9);
        SkbKeyboardItem skbKeyboardItemCn26 =
            new SkbKeyboardItem("全键",
                    com.csizg.imemodule.R.mipmap.sdk_btn_smile, com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile, CustomConstant.KEYBOARD_VALUE_CN26);
        SkbKeyboardItem skbKeyboardItemEn =
            new SkbKeyboardItem("英文",
                    com.csizg.imemodule.R.mipmap.sdk_btn_smile, com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile, CustomConstant.KEYBOARD_VALUE_EN);
//        SkbKeyboardItem skbKeyboardItemAlb =
//            new SkbKeyboardItem("阿拉伯",
//                    com.csizg.imemodule.R.mipmap.sdk_btn_smile, com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile, CustomConstant.KEYBOARD_VALUE_ALB);
        SkbKeyboardItem skbKeyboardItemBig9 =
            new SkbKeyboardItem("大九",
                    com.csizg.imemodule.R.mipmap.sdk_btn_smile, com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile,
                CustomConstant.KEYBOARD_VALUE_T9_BIG);
        SkbKeyboardItem skbKeyboardItemHand =
            new SkbKeyboardItem("手写",
                    com.csizg.imemodule.R.mipmap.sdk_btn_smile, com.csizg.imemodule.R.mipmap.sdk_btn_skb_smile,
                CustomConstant.KEYBOARD_VALUE_HAND);
        listKeyboard.add(skbKeyboardItemT9);
        listKeyboard.add(skbKeyboardItemCn26);
        listKeyboard.add(skbKeyboardItemEn);
//        listKeyboard.add(skbKeyboardItemAlb);
        listKeyboard.add(skbKeyboardItemBig9);
        listKeyboard.add(skbKeyboardItemHand);
    }

    public List<SkbTabItem> getSkbTabList() {
        return skbTabList;
    }

    public List<SkbFunItem> getSkbFunList() {
        return skbFunList;
    }

    public List<SkbTabItem> getSkbTabLoginList() {
        return skbTabLoginList;
    }

    public List<SkbFunItem> getSkbTypeSettingList() {
        return skbTypeSettingList;
    }

    public List<SkbFunItem> getGroupSkbTypeSettingList() {
        return groupSkbTypeSettingList;
    }

    public List<SkbKeyboardItem> getListKeyboard() {
        return listKeyboard;
    }

    public View getContactsView() {
        return contactsView;
    }
}
